def forward(self,des,tweet,num_prop,cat_prop,edge_index,edge_type):
        print("des shape:", des.shape, "type:", des.dtype)
        print("tweet shape:", tweet.shape, "type:", tweet.dtype)
        print("num_prop shape:", num_prop.shape, "type:", num_prop.dtype)
        print("cat_prop shape:", cat_prop.shape, "type:", cat_prop.dtype)
        print("edge_index shape:", edge_index.shape, "type:", edge_index.dtype)
        print("edge_type shape:", edge_type.shape, "type:", edge_type.dtype)
        d = self.linear_relu_des(des)
        print("Output after des linear:", d.shape)

        t = self.linear_relu_tweet(tweet)
        print("Output after tweet linear:", t.shape)

        n = self.linear_relu_num_prop(num_prop)
        print("Output after num_prop linear:", n.shape)

        c = self.linear_relu_cat_prop(cat_prop)
        print("Output after cat_prop linear:", c.shape)

        x = torch.cat((d, t, n, c), dim=1)
        print("Concatenated output:", x.shape)

        x = self.linear_relu_input(x)
        print("Output after input linear:", x.shape)

        x = self.rgcn(x, edge_index, edge_type)
        print("Output after first RGCN:", x.shape)

        x = F.dropout(x, p=self.dropout, training=self.training)

        x = self.rgcn(x, edge_index, edge_type)
        print("Output after second RGCN:", x.shape)

        x = self.linear_relu_output1(x)
        print("Output after output1 linear:", x.shape)

        x = self.linear_output2(x)
        print("Final output shape:", x.shape)

        edge_index = edge_index.long()
        edge_type = edge_type.long()

        d=self.linear_relu_des(des)
        t=self.linear_relu_tweet(tweet)
        n=self.linear_relu_num_prop(num_prop)
        c=self.linear_relu_cat_prop(cat_prop)
        x=torch.cat((d,t,n,c),dim=1)
        
        x=self.linear_relu_input(x)
        x=self.rgcn(x,edge_index,edge_type)
        x=F.dropout(x,p=self.dropout,training=self.training)
        x=self.rgcn(x,edge_index,edge_type)
        x=self.linear_relu_output1(x)
        x=self.linear_output2(x)
            
        return x 